#ifndef UDPHANDLER_H
#define UDPHANDLER_H

#include <QObject>
#include <QImage>
#include <QUdpSocket>
#include <QString>

class UDPHandler : public QObject
{
    Q_OBJECT
public:
    explicit UDPHandler(QObject *parent = nullptr);

public slots:
    /* 和ImageDealer线程交互 */
    // 把ImageDealer处理好的图片发出去
    void sendImage(const QImage);

    /* 和UI线程交互 */
    // 设置对方Ip
    void onGetFriendIp(const QString userId, const QString friendId, const QString friendIp);

private slots:
    // m_udpReceiveSocket收到数据
    void receiveData();

signals:
    /* 和UI线程交互 */
    // 把收到的图片传给UI渲染
    void receiveImage(const QImage);

private:
    // 用于发送的UDPSocket
    QUdpSocket* m_udpSendSocket;
    QString m_targetAddress;
    // 目的端口（用于发送数据）
    qint64 m_targetPort;
    // 监听端口（用于接受数据）
    qint64 m_listenPort;
    // 用于计算对应端口号
    QString m_userId;
    QString m_friendId;
    // 用于接受的UDPSocket
    QUdpSocket* m_udpReceiveSocket;
};

#endif // UDPHANDLER_H
